package com.indusfo.spc.mapper;

import com.indusfo.spc.pojo.Maintain;
import com.indusfo.spc.pojo.MaintainPlan;
import com.indusfo.spc.pojo.MaintainWork;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MaintainMapper {
    // 新增
    int insertSelective(Maintain record);

    Maintain selectByPrimaryKey(Integer maintainId);
    // 修改
    int updateByPrimaryKeySelective(Maintain record);
    // 查询
    List<Maintain> selectAll(Maintain maintain);
    // 分页计数
    int countMaintain(Maintain maintain);
    // 停用/启用/删除
    int definedMaintain(@Param("maintainIds") Long[] maintainIds,@Param("dataState") Integer dataState);
    // 编号判重
    Integer queryMaintainCode(Maintain maintain);
    // 名称判重
    Integer queryMaintainName(Maintain maintain);

    /**
     * 通过设备保养计划id过滤查询保养项目
     * @param maintainPlan
     * @return
     */
    List<Maintain> filterMaintainListByMaintainPlanId(MaintainPlan maintainPlan);

    /**
     * 通过设备保养计划id过滤查询保养项目 计数
     * @param maintainPlan
     * @return
     */
    int countMaintainListByMaintainPlanId(MaintainPlan maintainPlan);

    /**
     * 通过设备保养作业id过滤查询保养项目
     * @param maintainWork
     * @return
     */
    List<Maintain> filterMaintainListByMaintainWorkId(MaintainWork maintainWork);
    /**
     * 通过设备保养作业id过滤查询保养项目 计数
     * @param maintainWork
     * @return
     */
    int  countMaintainListByMaintainWorkId(MaintainWork maintainWork);

    /**
     * 设备保养计划的新增查询
     * @param deviceId
     * @return
     */
    List<Maintain> queryByDevice(@Param("deviceId") Integer deviceId);

    /**
     * 设备保养作业的新增查询
     * @param maintainWork
     * @return
     */
    List<Maintain> queryByMaintainWork(MaintainWork maintainWork);

    List<Maintain> filterMaintainListByMaintainIds(@Param("pagesize")Integer pagesize,@Param("incept") Integer incept,@Param("maintainIds") Integer[] maintainIds);
    int  countFilterMaintainListByMaintainIds(@Param("maintainIds") Integer[] maintainIds);

}